【C++基础】构造函数
说说你对构造函数的理解?
构造函数:对象创建时,利用特定的值构造对象(不是构造类),将对象初始化(保证数据成员有初始值),是类的一个public 函数
① 与类同名
② 无返回值
③ 声明为public
④ 一个类中可以有多个构造函数(实际就是重载)
1.默认构造函数无参数; 带参数的构造函数,冒号后边是初始化列表
B(int i) : data(i);
2.组合类构造函数
类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表)……{}
Line(Point p1, Point p2);//类中声明
Line(Point p1, Point p2) : p1(xp1),p2(xp2){...} //声明并初始化
初始化顺序:①调用内嵌对象的构造函数(如上边Point类的构造函数)
②内嵌对象按照 组合类的声明顺序初始化(先p1,再p2)
③执行组合类自己的构造函数体
3.常量必须在构造函数的初始化列表里初始化或将其设置为static
class A{
const int size=; //错误
A(){
const int size=;//正确,常量在构造函数里初始化
}
static const int size=;//正确,常量设置为static
};
【注意】 Test a(); 和Test a;的区别 //前提声明了Test类
前者声明一个返回值为Test,名为a的函数,后者声明了Test类的一个对象(把Test当成int)
struct Test{
Test(int){} //构造函数
Test(){}
void fun(){}
}; void main(){
Test a();
a.fun();
Test b();
b.fun(); //b声明为一个函数,而不是一个对象,这里编译出粗
}
********题**目*******分割线*********************************************************************
1.请问下面程序打印结果是?(程序员面试宝典10.3节)
class base{
private:
int mi, mj;
public:
base(int i) : mj(i),mi(mj){}//构造函数1,按照mi,mj声明顺序,先初始mi(mj),结果mi是随机数,再初始化mj
base() : mj(), mi(mj){}
int get_i(){return mi;}
int get_j(){return mj;}
};
void main(){
base obj(); //调用构造函数1
cout<<obj.get_i() <<"\n"<<obj.get_j()<< endl;
}
输出结果第一个为随机数,第二个是98.如果想得到98,98,修改私有变量声明顺序为mj, mi
【C++基础】构造函数的更多相关文章
- JS基础——构造函数VS原型
JS是一种基于对象的语言.在使用过程中不免遇到复制对象的问题.但通常我们採用的直接赋值'obj1=obj2'这样的做法会出现数据覆盖问题. 也就是对象引用过程中引用地址一致.导致对象数据被改动的问题. ...
- c#基础-构造函数 this new
构造函数作用:帮助我们初始化对象(给对象的每个属性依次的赋值)构造函数是一个特殊的方法:1).构造函数没有返回值,连void也不能写.2).构造函数的名称必须跟类名一样. 创建对象的时候会执行构造函数 ...
- JAVA基础——构造函数方法总结(有参构造和无参构造)
使用构造器时需要记住: 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个.1个或1个以上的参数 4.构造器没有返回 ...
- Flutter学习之Dart语言基础(构造函数)
最常见的构造函数形式,即生成构造函数,创建一个类的新实例: class Point { num x, y; //Dart中int和double是num的子类 //this引用当前类对象 Point(n ...
- C++ 基础 构造函数的使用
- 你好,C++(33)对象生死两茫茫 6.2.3 一个对象的生与死:构造函数和析构函数
6.2.2 使用类创建对象 完成某个类的声明并且定义其成员函数之后,这个类就可以使用了.一个定义完成的类就相当于一种新的数据类型,我们可以用它来定义变量,也就是创建这个类所描述的对象,表示现实世界中 ...
- Pytorch学习笔记(一)---- 基础语法
书上内容太多太杂,看完容易忘记,特此记录方便日后查看,所有基础语法以代码形式呈现,代码和注释均来源与书本和案例的整理. # -*- coding: utf-8 -*- # All codes and ...
- Swift - 构造函数
Swift 2.0 构造函数基础 构造函数是一种特殊的函数,主要用来在创建对象时初始化对象,为对象成员变量设置初始值,在 OC 中的构造函数是 initWithXXX,在 Swift 中由于支持函数重 ...
- ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 数据库上下文 上一章节中我们了解了 Entity Framewo ...
- 36.React基础介绍——2019年12月24日
2019年12月24日16:47:12 2019年10月25日11:24:29 主要介绍react入门知识. 1.jsx语法介绍 1.1 介绍 jsx语法是一种类似于html标签的语法,它的作用相当于 ...
随机推荐
- javascript之基本包装类型(Boolean,Number,String)基础篇
前几天整理了javascript中Array方面的知识,但是String中的一些方法多多少少和Array里的方法有些类似容易混淆,就顺便连同String所在的包装类一起整理一下,希望可以帮助到初学者, ...
- 杭电ACM2097--Sky数
这题思路很简单,把10,12,16进制数都按位相加,然后进行比较即可. http://acm.hdu.edu.cn/showproblem.php?pid=2097 <span style=&q ...
- 几道hihocoder不会做的题
1.https://hihocoder.com/problemset/problem/1433?sid=970287 boarding passes,不会做,看的别人的代码,现在还不是很理解. 2. ...
- mysql快速上手3
上一章给大家说的是数据库的视图,存储过程等等操作,这章主要讲索引,以及索引注意事项,如果想看前面的文章,url如下: mysql快速上手1 mysql快速上手2 索引简介 索引是对数据库表中一个或多个 ...
- linux解压zip、bz、bz2、z、gz、tar(解包)
zip: 压缩: zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>] ...
- Android开发之计算器(一)界面设计之activity_main布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 将double类型的值保留几位小数
1.第一个参数(3.1415926)是要处理的数值.第二个参数(1)为要保留的几位小数.第三个参数是按照“四舍五入”还是"直接取这一位的值"(MidpointRounding.To ...
- HMTL5的 video 在IOS7中碰到的坑
直接说问题吧, 测试设备,ipod 我们在移动端播放视频的时候,一般使用H5的video标签,OK,这里有几点差异(就我目前所发现的)给大家分享一下, 1.在IOS7中,video元素是需要确定大小的 ...
- Eclipse导入android包错误
错误提示:Invalid project description… 解决方案:假设你的工作空间是workshop,那么你可以在你的workshop下新建一个文件夹,然后放入你的包,再在Eclipse中 ...
- IOS中Retain和Copy的区别
1 ,可读性: readonly . readwrite@property(readwrite,....) valueType value;这个属性是变量的默认属性,就是如果你 (readwrite ...