关于构造函数

weicheichei 2010-11-03 03:36:16
构造函数是这样的,
Vector::Vector()
{
x=y=mag=ang=0.0;
mode='r';
}
Vector::Vector(double n1,double n2,char form)
{
mode=form;
if(form=='r')
{
x=n1;
y=n2;
set_mag();
set_ang();
}
else if(form=='p')
{
mag=n1;
ang=n2/Rad_to_deg;
set_x();
set_y();
}
else
{
cout<<"Incorrect 3rd argument to Vector()--";
cout<<"Vector set to 0\n";
cin.get();
cin.get();
x=y=mag=ang=0.0;
mode='r';
}
然后定义了一个对象
Vector result(0.0,0.0);这个到底是用哪个构造函数初始化,如果用第二个那么它里面只有两个参数,第三个参数就没有,并且我在机子上运行的时候就没有执行过这一段大家给解释下,谢谢!
else
{
cout<<"Incorrect 3rd argument to Vector()--";
cout<<"Vector set to 0\n";
cin.get();
cin.get();
x=y=mag=ang=0.0;
mode='r';
}
...全文
87 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
weicheichei 2010-11-03
  • 打赏
  • 举报
回复
#ifndef VECTOR_H_
#define VECTOR_H_
#include<iostream>
namespace VECTOR
{
class Vector
{
private:
double x;
double y;
double mag;
double ang;
char mode;
void set_mag();
void set_ang();
void set_x();
void set_y();
public:
Vector();
Vector(double n1,double n2,char form='r');
void set(double n1,double n2,char form='r');
~Vector();
double xval()const{return x;}
double yval()const{return y;}
double magval()const{return mag;}
double angval()const{return ang;}
void polar_mode();
void rect_mode();
Vector operator+(const Vector & b)const;
Vector operator-(const Vector & b)const;
Vector operator-()const;
Vector operator*(double n)const;
friend Vector operator*(double n,const Vector & a);
friend std::ostream & operator<<(std::ostream & os,const Vector & v);
};
}
#endif;
weicheichei 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 suveya 的回复:]
如果类里只有默认构造函数和有三个参数的构造函数的话,
使用Vector result(0.0,0.0);编译时候肯定是报错的,因为它找不到有两个参数的构造函数~

要么,你把你的完全的代码贴上看看~我想应该无法正常运行~
[/Quote]
谢谢你,我看了是我的声明中给最后一个参数有一个初始化值,谢谢啦。
suveya 2010-11-03
  • 打赏
  • 举报
回复
如果类里只有默认构造函数和有三个参数的构造函数的话,
使用Vector result(0.0,0.0);编译时候肯定是报错的,因为它找不到有两个参数的构造函数~

要么,你把你的完全的代码贴上看看~我想应该无法正常运行~
weicheichei 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chary8088 的回复:]
第三个参数有初始值,但你程序没有
[/Quote]
谢谢,就是在声明的时候有初始值
我还想问下就是我想把结果输出到一个文件上,
#include<iostream>
#include<cstdlib>
#include<ctime>
#include"vector.h"
#include<fstream>
int main()
{
ofstream fout;
。。。。。。。。。。。。。。
fout.open("a.txt")
fout<<"After"<<steps<<"steps,the subject""has the following location:\n";
fout<<result<<endl;
result.polar_mode();
fout<<"or\n"<<result<<endl;
fout<<"Average outward distance per step= "
<<result.magval()/steps<<endl;
steps=0;
result.set(0.0,0.0,112);
cout<<"Enter target distance(q to quit):";
}

运行以后就有错了E:\C++学习\1131\randwalk.cpp(8) : error C2065: 'ofstream' : undeclared identifier
E:\C++学习\1131\randwalk.cpp(8) : error C2146: syntax error : missing ';' before identifier 'fout'
E:\C++学习\1131\randwalk.cpp(8) : error C2065: 'fout' : undeclared identifier
E:\C++学习\1131\randwalk.cpp(31) : error C2228: left of '.open' must have class/struct/union type
E:\C++学习\1131\randwalk.cpp(33) : error C2146: syntax error : missing ';' before identifier 'fout'
E:\C++学习\1131\randwalk.cpp(33) : error C2297: '<<' : illegal, right operand has type 'char [6]'
E:\C++学习\1131\randwalk.cpp(36) : error C2297: '<<' : illegal, right operand has type 'char [4]'
E:\C++学习\1131\randwalk.cpp(38) : error C2297: '<<' : illegal, right operand has type 'char [36]'
执行 cl.exe 时出错.

1131.exe - 1 error(s), 0 warning(s)
wokonglinglude 2010-11-03
  • 打赏
  • 举报
回复
默认了 char 你试着在构造函数前加explicit 要完全显示的调用
默认参数 就是你 参数表里初始化的
FrankHB1989 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaoyaoxiaonizi 的回复:]

楼主啊,你的这两个构造函数都不符合调用的要求,我猜如果你确实能够运行的话,那就是你第二个构造函数最后一个参数有默认值了,你看看定义时是不是这样的Vector::Vector(double n1,double n2,char form = ‘a’)。
[/Quote]
声明。
函数定义同时也是一个声明,不过反过来不一定成立。
weicheichei 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 weicheichei 的回复:]
默认值是怎么设置的啊。谢谢!
xiaoyaoxiaonizi 2010-11-03
  • 打赏
  • 举报
回复
楼主啊,你的这两个构造函数都不符合调用的要求,我猜如果你确实能够运行的话,那就是你第二个构造函数最后一个参数有默认值了,你看看定义时是不是这样的Vector::Vector(double n1,double n2,char form = ‘a’)。
chary8088 2010-11-03
  • 打赏
  • 举报
回复
第三个参数有初始值,但你程序没有
dinjay 2010-11-03
  • 打赏
  • 举报
回复
不是吧 编译应该都编译不过 根本没有4个参数的带参构造
小楫轻舟 2010-11-03
  • 打赏
  • 举报
回复
第三个参数有可能设置为默认参数,
weicheichei 2010-11-03
  • 打赏
  • 举报
回复
可以运行的,我就是想问下构造函数这里是怎么运行的,
qq120848369 2010-11-03
  • 打赏
  • 举报
回复
运行不了.

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧