详解c++构造函数

前面我们介绍了c++作为一个面向对象的高级编程语言,知道了面向对象的特征。今天就开始正式的学习c++了。

我们知道,c++的核心就是把程序功能化,结构化,那么结构化,就必须有类。

一个类,里面有变量,有方法(函数)。类里边的变量,我们称他为成员变量,函数就称为成员函数。

由于c++封装的特性,一般默认情况下,类里边的成员变量和成员方法都是private的也就是私有的,外部对象是无法访问的,这种情况下类就没有了任何作用,因此我们一般把成员变量设为私有,把成员方法设为public  ,公有的成员方法也称作接口。

构造函数,和类名相同,无返回值,负责对成员变量初始化。

访问函数,得到成员变量的值

设置函数,设置(修改)成员变量的值

析构函数,在释放对象的时候启用,以~开头,和类名相同。

一般情况下,就算我们不写构造函数,系统也会给我们添加一个构造函数,这个构造函数就叫做默认构造函数,他不对成员变量有任何操作。我们写的构造函数会屏蔽系统的默认构造函数。但是构造函数是可以重载的。

所谓重载,就是相同的函数名,不同的参数列表,(变量类型不同,或者变量个数不同)

默认构造函数分为两种,不带参数的构造函数,带参数的有默认值构造函数。

不带参数的构造函数,这就是系统生成的构造函数一样,不对成员变量有任何操作。但是我们声明了,系统就不会在生成默认构造函数。

带参数的有默认值的构造函数,他可以包含很多情况,不带值的,带有一个值,或者更多值的。

class Thing 
{
private:
        int x,y;
public :
    //Thing(int a=0,int b=0);
    Thing ();
    Thing (int a,int b);
};
class Thing 
{
    Thing (){}//默认构造函数
    
    Thing (int a,)
    {
        x=a;
    }//重载的构造函数
    Thing (int a,int b)
    {
        x=a,y=b;
    }//带有默认值得构造函数
    //Thing (int a,int b); 这条语句和上面的语句不能同时存在,因为带默认值的构造参数包含了上面的情况,不复合重载的规则
}

当然了,构造函数还有一个表达方式,就是初始化列表,以“:”开头后加成员变量(参数值)

如:

  Thing (int a,nt b):x(a),y(b)P{}

在以下情况下必须用初始化列表:

类中的const成员、类中的引用成员、父类中无默认构造函数,在子类中对父类成员初始化必须使用初始化列表。

还有一个小知识点,就是 const 修饰的对象:

在c语言中,我们知道const 修饰的变量一经初始化就不能在改变了,那么在c++中,是怎么样呢?

在c++中 所有内容分为两类,对象   const修饰对象              普通对象

成员      const修饰                  普通成员

方法     const修饰方法           非const方法

其中,非const修饰的对象可以调用const成员函数也可调用普通成员函数

const对象只能调用const 成员函数

const成员函数    只有只读权限,因此它不可能修改成员变量的值

在函数定义时三种方式:

1、        函数返回值是const引用,函数的返回值不能被修改(不能做左值)

2、          函数的参数是const引用 函数体内不能修改参数的值int func(constint &)

3、        函数修饰成员函数(只限于类的定义) int function(int)const;在该函数体内不能修改成员变量(常用与打印输出函数,保护权限)

const 修饰的函数:此函数只能是类成员函数

1、        不能在const成员函数中修改成员变量的值

2、        只有类的成员函数才可以被const修饰

3、        函数体内不能调用该函数的对象

4、        只有类成员函数才可以修饰为const成员函数

5、        const成员函数只能调用该类中的const成员函数

6、        在类中,类中的一个成员函数有const版本和非const版本

时间: 2024-11-08 18:21:14

详解c++构造函数的相关文章

07--c++类的构造函数详解

c++类的构造函数详解 c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初学者有所帮助. c++类的构造函数详解 一. 构造函数是干什么的 class Counter{ public:         // 类Counter的构造函数         // 特点:以类名作为函数名,无返回类型         Counter()         { 

PHP面向对象编程详解:类和对象

PHP面向对象编程详解:类和对象 从OOP的视角看,不应区分语言.无论是C++.无论是Java.无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃.便没有对于Java..net.PHP 之间谁强谁弱的争执了. 希望这个介绍PHP5面向对象编程(OOP)的资料能让初学者受益,能让更多的PHPer开始转向OO的编程过程. 相对PHP4,PHP5在面向对象方面改变了很多.我们将只介绍PHP5环境下的面向对象.而我们必须改变自己来跟随PHP5的发展.如果代

【转】 c++拷贝构造函数(深拷贝,浅拷贝)详解

c++拷贝构造函数(深拷贝,浅拷贝)详解 2013-11-05 20:30:29 分类: C/C++ 原文地址:http://blog.chinaunix.net/uid-28977986-id-3977861.html 一.什么是拷贝构造函数      首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.  下面看一个类对象拷贝的简单例子. #include<iostream

[转]c++类的构造函数详解

c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初学者有所帮助. c++类的构造函数详解 一. 构造函数是干什么的 class Counter{ public:         // 类Counter的构造函数         // 特点:以类名作为函数名,无返回类型         Counter()         {             

c++构造函数详解(转)

c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初学者有所帮助.                                        c++类的构造函数详解                        一. 构造函数是干什么的class Counter{public:         // 类Counter的构造函数         /

08--C++拷贝构造函数详解

C++拷贝构造函数详解 一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: [c-sharp] view plain copy int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.下面看一个类对象拷贝的简单例子. [c-sharp] view plain copy #include <iostream> using namespace std; class CExample { private

C++中构造函数详解及显式调用构造函数

C++构造函数详解及显式调用构造函数 c++类的构造函数详解                        一. 构造函数是干什么的class Counter{public:         // 类Counter的构造函数         // 特点:以类名作为函数名,无返回类型         Counter()         {                m_value = 0;         }private:          // 数据成员         int m_val

C++构造函数详解(复制构造函数)

转载自:http://www.cnblogs.com/raichen/p/4752025.html 更多内容详见:http://blog.csdn.net/lwbeyond/article/details/6202256 构造函数是干什么的 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员. 构造函数的种类 1 class Complex 2 { 3 4 private : 5 double m_real;

CPrintDialog 构造函数参数详解

CPrintDialog 构造Windows打印或打印设置对话框(两者不同)     打印对话框                                                                                           打印设置对话框 格式: CPrintDialog( BOOL bPrintSetupOnly, DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENU