1.定义成了const之后的类

#include <iostream>
class area
{
public:int x;int y;mutable int z;  //不受const约束的类成员area() :x(10), y(10), z(2){}void printxy()const  //不可以访问类中局部变量{z = z + 1;std::cout << x << "  " << y  << "  " <<  z  << "\n";}void add(int a){x += a;y -= a;}void go()const{}
protected:
private:
};void main()
{//const对象不可以引用非const成员函数//不可以改变内部变量,mutable例外const area * const p = new area;p->go();//p->add();//p = new area;//指针可以改变const area area1;area1.printxy();//area1.add(1);area1.go();//area1.x = 10;//这一句说明当把类定义成const之后,定义成了mutable的值z可以修改area1.z += 4;area1.printxy();std::cin.get();
}

运行结果:

2.NULL和nullptr

#include <iostream>void go(int num)
{std::cout << "gonum" << std::endl;
}void go(void *p)
{std::cout << "gop" << std::endl;
}//C++中的NULL的类型是int ,0
void main()
{//C++是强类型,严格的类型检查void *p = nullptr;//C++的nullgo(p);   //结果为gop  //根据类型来处理go(NULL);  //会调用go(int num)  结果为gonumgo(nullptr);  //结果为gopstd::cin.get();
}

3.QT中button和Line_edit操作相关的

QString  str1=ui->lineEdit->text();
QString  str2=ui->lineEdit_2->text();
QString str3=str1+str2;
ui->lineEdit_3->setText(str3);QString  str1=ui->lineEdit->text();//获取文本
QString  str2=ui->lineEdit_2->text();
int  db1=str1.toInt();
int  db2=str2.toInt();//转换
int  db3=db1+db2;
QString str3;
str3.setNum(db3);//函数可以重载,很多个类型
ui->lineEdit_4->setText(str3);//设置文本将QString转换成为字符串的是:str3.toStdString().c_str;

4.new delete和malloc,free相关

#include<iostream>
#include <stdlib.h>class myclassA
{
public:myclassA(){std::cout << "create\n";}~myclassA(){std::cout << "delete\n";}
protected:
private:
};void main()
{//new delete自动调用构造析构myclassA *p = new myclassA;delete p;//只会分配内存,释放内存,不会对内存进行操作myclassA *p1 = (myclassA *)malloc(sizeof(myclassA));free(p1);std::cin.get();
}

案例2

</pre><pre class="cpp" name="code">#include<iostream>class myclass
{
public:int x;int y;
public:myclass(int a, int b) :x(a), y(b){std::cout << "构造哦" << std::endl;}myclass(){}~myclass(){std::cout << "销毁哦" << std::endl;//}public:void printxy();
protected:
private:
};
void myclass::printxy()
{std::cout << x << "  " << y << std::endl;
}
myclass class1(10, 11);//全局变量优先main函数
myclass class2(11, 12);void change1(myclass **pp)
{*pp = &class2;
}
void change2(myclass * &p)
{p = &class1;
}void  main22()
{myclass *p = &class1;p->printxy();change1(&p);p->printxy();change2(p);p->printxy();std::cin.get();
}void main11()
{//myclass *p = new myclass;myclass *p(new myclass(10, 9));//构造函数初始化p->printxy();myclass  class1(20, 1);myclass ** pp = &p;//二级指针存储一级指针的地址(*pp)->printxy();//一级类指针(**pp).printxy();//0级类指针std::cin.get();
}void main122()
{//myclass *p = (myclass *)malloc(sizeof(myclass));//free(p);myclass *p = new myclass;delete p;std::cin.get();
}

5.创建对象数组

#include "dialog.h"
#include <QApplication>class morewindow
{
public:Dialog *p[5];morewindow(){for(int i=0;i<5;i++){p[i]=new Dialog;p[i]->show();p[i]->move(i*100,i*100);}}~morewindow(){for(int i = 0;i<5;i++){delete p[i];}}Dialog * operator [](int i){return p[i];}
};int main(int argc, char *argv[])
{QApplication a(argc, argv);morewindow more1;more1[3]->hide();//重载下标return a.exec();
}

6.创建对象数组

#include "mainwindow.h"
#include <QApplication>
#include<QDebug>class morewindows
{
public:MainWindow *p[5];//指针数组,每一个元素是指针morewindows(){for(int i=0;i<5;i++){p[i]=new MainWindow;p[i]->show();p[i]->move(i*100,i*100);}}~morewindows(){for(int i=0;i<5;i++){delete p[i];}}
};class morewindowss
{
public:MainWindow *p[5][4];morewindowss(){for(int i=0;i<5;i++ ){for(int j=0;j<4;j++){p[i][j]=new MainWindow;p[i][j]->show();p[i][j]->move(i*130,j*130);}}}~morewindowss(){for(int i=0;i<5;i++ ){for(int j=0;j<4;j++){delete p[i][j];}}}
};//int a[5]   int *p=a;   int *p= new int[5];
//int *a[5]   int **p=a  int **p=new  (int *)[5];
//int  *a[3][5]
//int * (*p)[5]class morewindowsss
{
public:MainWindow  **p;//二级指针morewindowsss(){// p= (MainWindow **)malloc(sizeof(MainWindow *)*5);}void init(int num){p= new MainWindow * [5];//new的时候类型不需要加上括号for(int i=0;i<5;i++){p[i]=new MainWindow;p[i]->show();p[i]->move(num*100,i*100);}}void move(int x,int y){for(int i=0;i<5;i++){p[i]->move(x*100,y*100);}}morewindowsss  & operator = (morewindowsss const & more)//自己写的深拷贝{qDebug()<<"shen";this->p = new MainWindow * [5];for(int i=0;i<5;i++){p[i]=new MainWindow;p[i]->show();p[i]->move(500,i*100);}return *this;}~morewindowsss(){for(int i=0;i<5;i++){delete p[i];}delete [] p;// free(p);}
};class morewindowssss
{
public:// MainWindow *p[5][4];//二维数组,每一个元素都是指针MainWindow  **pA;//二级指针MainWindow *(*p)[4];//指向二维指针数组的指针morewindowssss(){pA=new  MainWindow  *[20];//一维数组p=(MainWindow *(*)[4])  pA;for(int i=0;i<5;i++ ){for(int j=0;j<4;j++){p[i][j]=new MainWindow;p[i][j]->show();p[i][j]->move(i*130,j*130);}}}~morewindowssss(){for(int i=0;i<5;i++ ){for(int j=0;j<4;j++){delete p[i][j];}}delete [] pA;}
};int main(int argc, char *argv[])
{QApplication a(argc, argv);morewindowsss   more1;more1.init(1);// more1.move(1,2);morewindowsss   more2;//拷贝构造more2=more1;//赋值// morewindowsss   more2(more1);more2.move(3,4);return a.exec();
}
 

const对象,NULL和nullptr,C++中创建对象数组相关推荐

  1. Java中创建对象数组

    1.对象数组的概念: 如果一个数组中的元素是对象类型,则称该数组为对象数组.当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象. 2.对象数组的定义和使用: 对 ...

  2. const对象不能调用非const成员函数

    在C++中,可以用const来定义一个const对象,但const对象不可以调用类中的非const成员函数 原因 引发原因:: 由调用成员函数时隐式传入的当前对象的this指针引起. 非const成员 ...

  3. C语言nullptr错误,c/c++中的NULL,nullptr,0

    NULL,nullptr与0 0 NULL C语言中 C++中 隐式类型转换 nullptr 预处理中的条件编译语句 0 在我们的程序中,单纯一个0,在不同的类型中有着不同的意思 0,是一个空字符常量 ...

  4. java 循环list 对象_java计算list集合中重复对象的次数及for循环内外创建对象

    我的需求:计算字符串集合中"数值"出现的次数,然后在for循环中计算"数值"及出现的次数 解决方案: 1.使用collections类中的frequency(集 ...

  5. java null 对象吗_java中new一个对象和对象=null有什么区别

    原创:转载请注明出处 今天在写代码时,遇到一个问题,特此进行记录. for (ProfileDto profileDto : profile) { // Profile resProfile=null ...

  6. java中创建对象的一般格式是什么_Java零基础快速入门|对象的创建和使用(下)...

    本篇文章主要内容:构造方法Constructor 空指针异常 当实例变量是一个引用 方法调用时参数的传递问题 难点解惑 构造方法Constructor 什么是构造方法?构造方法怎么定义?构造方法怎么调 ...

  7. C++中NULL和nullptr的区别

    在编写C程序的时候只看到过NULL,而在C++的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C++11版本中新加入的,它的出现是为了解决NULL表示空指针在C++中具有 ...

  8. C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别

    最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...

  9. Java 中关于String的空对象(null) ,空值(empty),空格 的总结

    Java 中关于String 对象的空对象(null), 空值(""),空格(" ")对于很多人来说很模糊,下面将分别介绍一下他们的用法:定义,判断,运算. 首 ...

最新文章

  1. SSE3和SSSE3 Intrinsics各函数介绍
  2. 写时复制,写时拷贝,写时分裂,Copy on write
  3. 类与接口(四)方法重载解析
  4. SD--关于价格过程的确定
  5. 力扣(LeetCode) 35. 搜索插入位置
  6. SAP BRF+ ruleset里维护多条rule,每条rule逐一执行
  7. java web登录状态保持_java web用于保持状态的4种方法
  8. 文科思维Java_开源之Processing:这好玩的编程语言是为文科生艺术家准备的
  9. Spring Data JPA 从入门到精通~@Query详解
  10. 基于Salmon的转录组批量定量流程和差异分析
  11. 马云无偿划转阿里股权?蚂蚁集团回应:假消息
  12. Block代码块中使用局部变量注意点
  13. 第三周 分队列 mooc 翁恺 c语言
  14. 浅谈 NLP 细粒度情感分析(ABSA)
  15. 如何在sql存储过程中打log_SQL语句优化
  16. 化工企业数据分析中心项目之采购模块分析
  17. 阿里云开发-身份证图像识别(SpringBoot)
  18. PLC十字路口交通灯设计
  19. 统计学习方法详解之第十三章 无监督学习概论
  20. PHP file_get_contents函数详解

热门文章

  1. Seaborn(2)调色板
  2. wxWidgets:OLE 自动化示例
  3. boost::type_erasure::ostreamable相关的测试程序
  4. boost::mp11::mp_transform_front相关用法的测试程序
  5. boost::mp11::mp_compose相关用法的测试程序
  6. boost::hana::accessors用法的测试程序
  7. Boost:bind绑定一元地址的测试程序
  8. ITK:将真实和虚构图像转换为复杂图像
  9. VTK:可视化算法之BandedPolyDataContourFilter
  10. VTK:非结构化网格之ClipUnstructuredGridWithPlane