const对象,NULL和nullptr,C++中创建对象数组
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++中创建对象数组相关推荐
- Java中创建对象数组
1.对象数组的概念: 如果一个数组中的元素是对象类型,则称该数组为对象数组.当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象. 2.对象数组的定义和使用: 对 ...
- const对象不能调用非const成员函数
在C++中,可以用const来定义一个const对象,但const对象不可以调用类中的非const成员函数 原因 引发原因:: 由调用成员函数时隐式传入的当前对象的this指针引起. 非const成员 ...
- C语言nullptr错误,c/c++中的NULL,nullptr,0
NULL,nullptr与0 0 NULL C语言中 C++中 隐式类型转换 nullptr 预处理中的条件编译语句 0 在我们的程序中,单纯一个0,在不同的类型中有着不同的意思 0,是一个空字符常量 ...
- java 循环list 对象_java计算list集合中重复对象的次数及for循环内外创建对象
我的需求:计算字符串集合中"数值"出现的次数,然后在for循环中计算"数值"及出现的次数 解决方案: 1.使用collections类中的frequency(集 ...
- java null 对象吗_java中new一个对象和对象=null有什么区别
原创:转载请注明出处 今天在写代码时,遇到一个问题,特此进行记录. for (ProfileDto profileDto : profile) { // Profile resProfile=null ...
- java中创建对象的一般格式是什么_Java零基础快速入门|对象的创建和使用(下)...
本篇文章主要内容:构造方法Constructor 空指针异常 当实例变量是一个引用 方法调用时参数的传递问题 难点解惑 构造方法Constructor 什么是构造方法?构造方法怎么定义?构造方法怎么调 ...
- C++中NULL和nullptr的区别
在编写C程序的时候只看到过NULL,而在C++的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C++11版本中新加入的,它的出现是为了解决NULL表示空指针在C++中具有 ...
- C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别
最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...
- Java 中关于String的空对象(null) ,空值(empty),空格 的总结
Java 中关于String 对象的空对象(null), 空值(""),空格(" ")对于很多人来说很模糊,下面将分别介绍一下他们的用法:定义,判断,运算. 首 ...
最新文章
- NOIp2018集训test-9-7(pm) (联考一day1)
- Python中的支持向量机SVM的使用(有实例有源码)
- PyODPS 中使用 Python UDF
- python 递归函数 内存底层_Python基础篇【第八篇】:剖析递归函数
- Adobe Flash CS4 序列号-Adobe Dreamweaver CS4 序列号
- 公共邮箱,共享邮箱,免费邮箱,匿名邮箱,临时邮箱,免费收信
- 70行代码让你远离颈椎病,致所有的程序猿们
- docker 安装 Nginx 并配置反向代理
- 分析XBrowser地址栏使用案例
- C/C++ 混合编译 C++中的extern “C“
- 大学英语综合教程二 Unit 8 课文内容英译中 中英翻译
- 手把手带你抓取智联招聘的“数据分析师”岗位!
- 如何解决因涉及不良信息导致QQ互联审核不通过?
- calcHist的使用
- 什么叫资讯,资讯是什么?
- 中国阀门喷射式喷墨打印机市场深度研究分析报告
- 手把手教你从头开始搭建友善之臂ARM-tiny4412开发环境(史上最详细!!)
- 图文编排之HTML身份介绍浮动(图片换成自己的就行啦)
- python进阶练习题:馏分类【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
- ZOJ 3591 Nim (NIM博弈+统计
热门文章
- Spring Boot 集成数据库
- OpenCASCADE:读取和写入 IGES
- OpenCASCADE:OCAF 使用
- boost::phoenix::lambda相关的测试程序
- boost::mpl模块实现print相关的测试程序
- boost::hana::append用法的测试程序
- boost::log模块实现格式化程序流的测试程序
- boost::gil::ColorBaseConcept用法的测试程序
- VTK:绘图之FunctionalBagPlot
- VTK:图表之SelectedVerticesAndEdgesObserver