#include <stdio.h>
#include <string.h> class Student
{
private:
int id;
char name[32]; public:
Student(int id, const char* name)
{
this->id = id;
strcpy(this->name, name);
}
}; int main()
{
Student s ( 201601, "shaofa");
return 0;
}

例子如上:构造函数与类名相同,其中的形参都是类元素(id name),然后在函数体里给类元素进行了初始化。

一、构造函数的作用

构造函数的作用有三:1.让类可以以【Student s ( 201601, "shaofa");】的形式创建一个类对象;2.完成初始化;3.为对象的数据成员开辟内存空间。

如果不像上面一样写一个显式的构造函数,那么编译器会为类生成一个默认的构造函数, 称为 "默认构造函数", 默认构造函数不能完成对象数据成员的初始化, 只能给对象创建标识符, 并为对象中的数据成员开辟一定的内存空间。

二、默认构造函数

默认构造函数不传参,如果需要指定参数的初始化值,需要在函数体中指定。

#include <stdio.h>
#include <string.h> class Student
{
private:
int id;
char name[32]; public:
// 默认构造函数
Student()
{
id = 0;
name[0] = 0;
} // 带参构造函数
Student(int id, const char* name)
{
this->id = id;
strcpy(this->name, name);
}
}; int main()
{
Student s1 ;
Student s2 ( 201601, "shaofa");
return 0;

而像上面那种带参数的显示构造函数,可以在传参的时候指定函数的初始化值,所以写一个显示构造函数更方便,就不需要去修改类里面的函数体了。

https://blog.csdn.net/qq_20386411/article/details/89417994

#include"iostream"
#include"math.h"
#include"vector"
class single_point{ public :
float x;
float y;
float z;
single_point(float x_in,float y_in,float z_in)//构造函数
{
x = x_in;
y = y_in;
z = z_in;
}
};
void calu(float x,float y,float& z1,float& z2){
double k1=x*x+9/4.0*y*y-1;
double k2=x*x+9/80.0*y*y;
double a=1.0;
double b=-pow(k2,1.0/3);
double c=k1;
z1=(-b+sqrt(b*b-4*a*c))/2*a ;
z2=(-b-sqrt(b*b-4*a*c))/2*a ;
}
void collect(int split_level,float max_x ,float max_y,std::vector<single_point>& points){
for (int i=0;i<=split_level;i++){
float x=-max_x + split_level;
for (int j=0;j<=split_level;j++){
float y=-max_y + split_level;
float z1;
float z2;
calu(x,y,z1,z2);
single_point point1(x,y,z1);
single_point point2(x,y,z2);
points.push_back(point1);
points.push_back(point2);
}
}
}
int main()
{
std::vector<single_point> points;
collect(100,1.5,1.0,points);
return 0;
}

写法:

https://blog.csdn.net/m0_51271123/article/details/116503103

[自用初学]c++的构造函数的更多相关文章

  1. 初学深度学习(TensorFlow框架的心得and经验总结)自用环境的总结

    初学者的时间大部分浪费在了环境上了: 建议直接上Linux系统,我推荐国产的深度系统,deepin这几年一直在不断的发展,现在15.4已经很不错了 1,图形化界面很漂亮,内置正版crossover,并 ...

  2. C++ 合成默认构造函数的真相

    对于C++默认构造函数,我曾经有两点误解: 类如果没有定义任何的构造函数,那么编译器(一定会!)将为类定义一个合成的默认构造函数. 合成默认构造函数会初始化类中所有的数据成员. 第一个误解来自于我学习 ...

  3. javascript中继承(二)-----借用构造函数继承的个人理解

    本人目录如下: 零.寒暄&回顾 一,借用构造函数 二.事件代理 三,call和apply的用法 四.总结 零.寒暄&回顾 上次博客跟大家分享了自己对原型链继承的理解,想看的同学欢迎猛击 ...

  4. C++雾中风景6:拷贝构造函数与赋值函数

    在进行C++类编写的过程之中,通常会涉及到类的拷贝构造函数与类的赋值函数.初涉类编写的代码,对于两类函数的用法一直是挺让人困惑的内容.这篇文章我们会详细来梳理拷贝构造函数与赋值函数的区别. 1.调用了 ...

  5. C++对象模型的那些事儿之四:拷贝构造函数

    前言 对于一个没有实例化的空类,编译器不会给它默认生成任何函数,当实例化一个空类后,编译器会根据需要生成相应的函数.这类函数包括一下几个: 构造函数 拷贝构造函数 析构函数 赋值运算符 在上一篇博文C ...

  6. C++对象模型的那些事儿之三:默认构造函数

    前言 继前两篇总结了C++对象模型及其内存布局后,我们继续来探索一下C++对象的默认构造函数.对于C++的初学者来说,有如下两个误解: 任何class如果没有定义default constructor ...

  7. 前端笔记之JavaScript面向对象(二)内置构造函数&相关方法|属性|运算符&继承&面向对象

    一.复习 1.1复习上下文 函数的调用方式 上下文 fun() window obj.fun() obj box.onclick = fun box setInterval(fun,1000) set ...

  8. 浅析构造函数,及public、private、protected、final、this、super关键字

    初学JAVA,感觉很多知识点不熟悉,看了好多遍教材,最终还是决定把它写下来,加深印象以便忘了的时候再过来复习一下.看上去字数可能比较多,其实内容很简明. 首先看this的用法: package tes ...

  9. 拒绝“高冷”词汇!初学C#中的委托

    有一天,你写了好多好多带“形参”的构造函数(就是“方法”,同义),而且需要向这些构造函数里传递同样的“实参”,然后你就憨憨地一个一个函数的调用并赋予同样的“实参”,这一天就这么过去了... 又过了几天 ...

  10. java构造函数是否可继承,以及子类构造函数可否不使用super调用超类构造函数

    问题一:java的构造函数能否被继承? 笔者初学java看的一本书说:“java的子类自然的继承其超类的“非private成员”. 通常java的构造函数被设置为public的(若你不写构造函数,ja ...

随机推荐

  1. UCOS-III笔记

    1.单片机程序分类:轮询程序,前后台程序,多任务系统程序 2.多任务系统伪代码 1 int flag1 = 0; 2 int flag2 = 0; 3 int flag3 = 0; 4 5 int m ...

  2. NLP学习日记

    数据读取 下载csv文件后使用excel进行转存,然后用pandas读取,再把读取后转为numpy,numpy的tensor里.-1代表数组的最大维度,将原始数据集的标签和特征集分开,便于下一步的处理 ...

  3. 关于webpack 开启代理proxy后,接口看不到代理地址的问题。

    今天在项目中发现, 明明在proxy里代理了 接口地址确不是10.10.11.106/front/xxxxxx.这是为啥呢?changeOrigin的修改也是一样,在网络请求中发现host还是没改.这 ...

  4. webpack的核心概念

    一.entry 指定webpack从哪个文件开始入手打包,下面是单入口 多页面开发,每个页面都有自己的js文件,多个文件,所以需要多个入口 我们看看多入口,单出口bundle.js,我们在src仅仅多 ...

  5. 初次使用gitee的笔记

    步骤及问题 1.git config --global user.name "username" 2.git config --global user.email "us ...

  6. 关于filter_input函数

    PHP: filter_input <?php $search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_ ...

  7. a[i]之和小于N的含义

    例题 小白月赛 困难卷积 题目 要求一个暴力算是 \(O(n^2)\) 的东西 同时题目保证 \(\sum a[i] \leq 10^7\) 题解 \(\sum a[i] \leq 10^7\) 的含 ...

  8. Kotlin源码分析 - 元编程(使用自身语言编写生成自身代码)

    Kotlin源码分析 Kotlin模块FIR分析发现,在生成fir tree的时候,kotlin使用了元编程的技术,以前看到这个技术还是在JastAdd上,使用jastadd语法去写代码,生成Java ...

  9. execsnoop

    作用 execsnoop通过ftrace实时监控进程的exec()行为,输出短时进程的信息,包括进程 PID.父进程 PID.命令行参数以及执行的结果. 安装execsnoop git clone - ...

  10. python单机版自动化测试框架源代码(selenium+Appium+requests+unittest+Excel用例+HTMLTestRunner报告)

    一.自动化测试框架: 1.框架和项目源代码下载 https://gitee.com/rmtic/autoTest 说明:框架可以支持web界面UI.安卓Android,ios苹果.接口API等自动化测 ...